home *** CD-ROM | disk | FTP | other *** search
- 10000 '*************************************************************
- 10002 '***** PC-GOLF THE GOLFER's PROGRAM PC-GOLF *****
- 10004 '***** Version 1.5 (C) 1982,1983,1984 Ed Chandler *****
- 10006 '*************************************************************
- 10018 ' 2. TALLY THE SCORES FOR A ROUND
- 10020 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- 10030 MNU5$="PC-GOLF's Scorekeeper"
- 10040 CLS:PRINT MNU2$:PRINT:PRINT MNU5$:PRINT
- 10042 IF ROS=0 THEN 10060
- 10050 DEF SEG=&H40:I%=PEEK(&H17):I%=I% OR 32:POKE &H17,I% 'num lock on
- 10060 IF PACT>0 THEN 10100
- 10070 PRINT:PRINT"The player roster is empty. To Tally"
- 10080 PRINT"scores you must first add a player"
- 10090 PRINT"to the player roster.":GOSUB 580:GOTO 530 'back to main
- 10100 MNU1$="1. Tally the player's scores only.":PRINT SPC(3);MNU1$
- 10110 MNU3$="2. Tally the player's putts only.":PRINT SPC(3);MNU3$
- 10120 MNU4$="3. Tally both the player's putts and scores.":PRINT SPC(3);MNU4$
- 10130 PRINT SPC(3);MNURT$:PRINT
- 10140 M1$="key":M2$="(1,2,3 or M) ":GOSUB 570
- 10150 IF KB=1 THEN MNU6$=MNU1$:YT=1:GOTO 10200
- 10160 IF KB=2 THEN MNU6$=MNU3$:YT=2:GOTO 10200
- 10170 IF KB=3 THEN MNU6$=MNU4$:YT=3:GOTO 10200
- 10180 IF KB$="M" OR KB$="m" THEN CLOSE:GOTO 530 'back to main
- 10190 GOSUB 610:GOTO 10040 'menu
- 10200 CLS:PRINT MNU5$:X=1:GOSUB 550 'show roster
- 10210 PRINT:IF PR=0 THEN GOSUB 590:GOTO 530 'back to main
- 10220 LINE INPUT"ENTER the line number of the player you want to tally. ";KB$
- 10230 KB=VAL(KB$):IF KB>0 AND KB<=PMAX AND TMP(KB)=KB THEN 10260
- 10240 GOSUB 611:GOTO 10200
- 10250 '+++++
- 10260 PRN=KB:GOSUB 660:GET #4,KB 'get players record
- 10270 RN=VAL(E4$):N$=MID$(GCDIR$(RN),3,NMAX):IF INSTR(N$,"*")=0 THEN 10320
- 10280 PRINT:PRINT"The player has not been assigned a home course. You must"
- 10290 PRINT"assign a home course before scores can be tallied."
- 10300 CLOSE #4:GOSUB 580:GOTO 530 'back to main
- 10310 '+++++
- 10320 HC=1:T$="White":IF G4$="g" THEN T$="Gold"
- 10330 IF G4$="b" THEN T$="Blue" ELSE IF G4$="r" THEN T$="Red"
- 10340 GOSUB 670:GET #5,KB 'get player.dat
- 10350 CLS:PRINT MNU5$:PRINT:PRINT MNU6$:PRINT
- 10360 COLOR 0,15,0:PRINT SPC(7);B4$:COLOR 7,0,0
- 10370 PRINT:PRINT "Do you want to TALLY scores for:"
- 10380 '
- 10390 PRINT"a round played at,"
- 10400 PRINT:COLOR 0,15,0:PRINT SPC(7);N$:COLOR 7,0,0
- 10410 PRINT:PRINT"using the ";:COLOR 0,15,0:PRINT SPC(2)T$SPC(2);
- 10420 COLOR 7,0,0:PRINT" tees?"
- 10430 RESTORE 834:GOSUB 600:IF KB$="Y" THEN 10700 ' ok-go
- 10440 '+++++ get preferred course +++++
- 10450 CLS:PRINT MNU5$:M1=0:GOSUB 540 'show courses
- 10460 PRINT:PRINT"PRESS the line number of the course"
- 10470 PRINT:M1$="where this round was played. ":GOSUB 560
- 10480 IF KB>0 AND KB<=CMAX AND TMP(KB)=KB THEN 10510
- 10490 PRINT:PRINT"Please choose a line number from the list."
- 10500 GOSUB 580:GOTO 10450
- 10510 HC=1:RN=KB:IF RN=VAL(E4$) THEN 10550
- 10520 HC=0:PRINT:PRINT"This is not the player's home course.":BEEP
- 10530 RN=KB:RESTORE 813:GOSUB 600
- 10540 IF KB$<>"Y" THEN 10450
- 10550 GOSUB 650:GOSUB 655:GET #2,RN:GET #3,RN:CLOSE #2,#3 'get course records
- 10560 P$=E2$:IF F4$="f" THEN P$=H2$
- 10570 GOSUB 710 'set up CP(I)=course pars
- 10580 CLS:PRINT:PRINT MNU5$:PRINT:T=1
- 10590 IF CVS(K2$)<>0 THEN PRINT USING" #. GOLD"; T:T$(T)="Gold":A$(T)=K2$:T=T+1
- 10600 IF CVS(L2$)<>0 THEN PRINT USING" #. BLUE"; T:T$(T)="Blue":A$(T)=L2$:T=T+1
- 10610 IF CVS(F2$)<>0 THEN PRINT USING" #. WHITE";T:T$(T)="White":A$(T)=F2$:T=T+1
- 10620 IF CVS(I2$)<>0 THEN PRINT USING" #. RED"; T:T$(T)="Red" :A$(T)=I2$:T=T+1
- 10630 PRINT:PRINT"PRESS the line number for the Tees"
- 10640 M1$="the player used for this round. ":GOSUB 560
- 10650 T=T-1:IF KB<1 OR KB>T THEN GOSUB 610:GOTO 10580
- 10660 T$=T$(KB) 'cr name
- 10670 CR!=CVS(A$(KB)) 'CR for this course
- 10680 N$=MID$(GCDIR$(RN),3,NMAX):GOTO 10350
- 10690 '+++++ get course records
- 10700 GOSUB 650:GOSUB 655:GET #2,RN:GET #3,RN:CLOSE #2,#3
- 10710 P$=E2$:IF F4$="f" THEN P$=H2$
- 10720 GOSUB 710 'set CP(I)=pars
- 10730 IF YT=1 OR YT=3 THEN 10810 'tally scores
- 10740 '+++++
- 10750 IF YT=2 OR YT=3 THEN 12250 'tally putts
- 10760 'nop
- 10770 '+++++ SAVE SCORES AND PUTTS +++++
- 10780 PUT #5,PRN:CLOSE #5:PUT #4,PRN:CLOSE #4 'player.dat & pdir.dat
- 10790 GOTO 10040 'menu
- 10800 '+++++ TALLY SCORES +++++
- 10810 CLS:PRINT MNU6$:PRINT:PRINT"ENTER the front side scores for ";B4$
- 10820 PRINT:PRINT SPC(6);"Hole # Score"
- 10830 S=3:N=1:M=9:L=0:GOSUB 720 'get scores in ps(m)
- 10840 PRINT:PRINT SPC(4);"Score is ";SUM
- 10850 RESTORE 833:GOSUB 600 'ask for change
- 10860 T$="Change a front nine score"
- 10870 IF KB$="Y" THEN M1$="Score":GOSUB 740:GOTO 10850 'make change
- 10880 CLS:PRINT MNU6$:PRINT:PRINT"ENTER the back side scores for ";B4$
- 10890 PRINT:PRINT SPC(6);"Hole # Score"
- 10900 S=3:N=1:M=9:L=9:GOSUB 720 'get scores in ps(m)
- 10910 PRINT:PRINT SPC(5);"Score is ";SUM
- 10920 RESTORE 833:GOSUB 600 'ask for change
- 10930 T$="Change a back nine score"
- 10940 IF KB$="Y" THEN M1$="Score":GOSUB 740:GOTO 10920 'make change
- 10950 '++++++ get adjusted gross score +++++
- 10960 GOSUB 650:GOSUB 655:GET #2,RN:GET #3,RN:CLOSE #2,#3 'gcdir.dat,course.dat
- 10970 IF F4$="m" THEN FOR I=1 TO 18:TMP(I)=VAL(MID$(E2$,I,1)):NEXT' get pars
- 10980 IF F4$="f" THEN FOR I=1 TO 18:TMP(I)=VAL(MID$(H2$,I,1)):NEXT' get pars
- 10990 T$=LEFT$(C5$,1):H=VAL(LEFT$(C5$,2))
- 11000 IF T$="+" THEN H=-H 'H'cap
- 11010 GOSUB 13210 '+++++ calculate adjusted gross score +++++
- 11020 '+++++ DISPLAY SCORES +++++
- 11030 CLS:PRINT SPC(15):COLOR 0,15,0:PRINT" ADJUSTED GROSS SCORES ";:COLOR 7,0,0
- 11040 PRINT SPC(18);GREG$:PRINT
- 11050 PRINT "HOLE #";SPC(4);
- 11060 FOR I=1 TO 9 STEP 3:PRINT USING "###";I;I+1;I+2;:PRINT SPC(1):NEXT I
- 11070 PRINT "Front";
- 11080 FOR I=10 TO 18 STEP 3:PRINT USING "###";I;I+1;I+2;:PRINT SPC(1):NEXT I
- 11090 PRINT "Back":PRINT SPC(41);"nine";SPC(30);"nine":PRINT "PAR";SPC(8);
- 11100 FOR I=1 TO 9 STEP 3:PRINT CP(I);CP(I+1);CP(I+2);SPC(1):NEXT I:PRINT CF;
- 11110 FOR I=10 TO 18 STEP 3:PRINT USING "###";CP(I);CP(I+1);CP(I+2);
- 11120 PRINT SPC(1):NEXT I:PRINT CB
- 11130 PRINT "gross score";
- 11140 FOR I=1 TO 9 STEP 3:PRINT PS(I);PS(I+1);PS(I+2);SPC(1);:NEXT I:PRINT PF;
- 11150 FOR I=10 TO 18 STEP 3:PRINT USING "###";PS(I);PS(I+1);PS(I+2);
- 11160 PRINT SPC(1):NEXT I:PRINT PB
- 11170 PRINT:COLOR 0,15,0:PRINT " adj.gross ";
- 11180 FOR I=1 TO 9 STEP 3:PRINT GS(I);GS(I+1);GS(I+2);SPC(1);:NEXT I:PRINT AF;
- 11190 FOR I=10 TO 18 STEP 3:PRINT USING "###";GS(I);GS(I+1);GS(I+2);
- 11200 PRINT SPC(1);:NEXT I:PRINT AB:COLOR 7,0,0
- 11210 '+++++ arrow adjusted scores
- 11220 T$="adjustments ":N$=CHR$(42)+SPACE$(2):FOR I=1 TO 18
- 11230 TMP(I)=1:IF GS(I)=PS(I) THEN TMP(I)=0
- 11240 IF TMP(I)=1 THEN T$=T$+N$ ELSE T$=T$+SPACE$(3)
- 11250 IF FNNMODM(I,3)=0 THEN T$=T$+SPACE$(1)
- 11260 IF I=9 THEN T$=T$+SPACE$(5)
- 11270 NEXT I:PRINT T$:PRINT
- 11280 '+++++
- 11290 PRINT "PAR is ";PAR;" at ";B2$
- 11300 PRINT "The player's score is ";:PRINT USING "###";PS
- 11310 LOCATE CSRLIN+1,15:COLOR 0,15,0:PRINT" The adjusted score is ";
- 11320 PRINT USING "###";HS;:PRINT" "
- 11330 LOCATE CSRLIN,15:PRINT " based on handicap of ";C5$
- 11340 KB$=B4$:GOSUB 700 'remove excess spaces
- 11350 LOCATE CSRLIN,15:PRINT" The tally is completed for ";KB$+" ":COLOR 7,0,0
- 11360 GOSUB 590
- 11370 '+++++
- 11380 '
- 11390 CLS:PRINT MNU6$:PRINT
- 11400 PRINT"For PC-GOLF'S calculations you have two options."
- 11410 PRINT:PRINT " Option one."
- 11420 PRINT" 1. Include the adjusted gross score in the handicap calculation."
- 11430 PRINT" 2. Do not use this score. This was a practice round.":PRINT
- 11440 M1$="number":M2$="(1 or 2) ":GOSUB 570
- 11450 RESTORE 814
- 11460 IF KB=1 THEN GOSUB 600:IF KB$="Y" THEN 11500 ELSE CLS: GOTO 11390
- 11470 IF KB=2 THEN GOSUB 600:IF KB$="Y" THEN 11890 ELSE CLS:GOTO 11390
- 11480 PRINT:PRINT"Please choose an option number. ":GOSUB 580:CLS:GOTO 11390
- 11490 '+++++ get course rating +++++
- 11500 CR!=CVS(F2$):IF G4$="r" THEN CR!=CVS(I2$)
- 11510 IF G4$="g" THEN CR!=CVS(K2$) ELSE IF G4$="b" THEN CR!=CVS(L2$)
- 11520 '
- 11530 '+++++ save the last 20 differentials +++++
- 11540 N=1:FOR I=1 TO 19:TMP(I+1)=CVI(MID$(D5$,N,2)):N=N+2:NEXT
- 11550 TMP(1)=10*HS-INT(10*CR!)
- 11560 P$="":FOR I=1 TO 20:P$=P$+MKI$(TMP(I)):NEXT
- 11570 LSET D5$=P$:LSET A5$="V" ' adj.scores valid data
- 11580 '
- 11590 '+++++ calculate new h'cap-sort for low scores +++++
- 11600 FOR I=1 TO 19:K=I+1:FOR J=K TO 20
- 11610 IF TMP(I)<=TMP(J) THEN 11630
- 11620 T=TMP(I):TMP(I)=TMP(J):TMP(J)=T
- 11630 NEXT J:NEXT I
- 11640 K=CVI(O5$)+1:IF K>20 THEN K=20 'count diffs
- 11650 RSET O5$=MKI$(K)
- 11660 '
- 11670 N=10:IF K=20 THEN 11740 'get # differentials to use
- 11680 IF K<=5 THEN N=1
- 11690 IF K=6 THEN N=2 ELSE IF K=7 THEN N=3
- 11700 IF K>7 AND K<20 THEN N=INT(K/2)
- 11710 '
- 11720 '+++++ get new h'cap
- 11730 '+++++
- 11740 T!=0:S=20-K+1:F=S+N-1 'set bounds on diffs
- 11750 FOR I=S TO F:T!=T!+TMP(I):NEXT 'get low diff's
- 11760 HT$=" ":IF K<20 THEN HT$="T"
- 11770 X=N*10:T!=P96!*T!:T=CINT(T!/X) ' convert and round
- 11780 T$=STR$(T):T$=MID$(T$,2,2)+HT$
- 11790 IF T!<0 THEN T$="+"+RIGHT$(T$,2)
- 11800 RSET C5$=T$:RSET D4$=C5$
- 11810 GOTO 11880 '+++++ debug
- 11820 PRINT "adj gross=";HS,"cr=";CR!
- 11830 PRINT:PRINT"# diffs=";K;" # used=";N;"Hcap=";T$
- 11840 T!=0:PRINT"low diffs=";:FOR I=S TO F:PRINT TMP(I);:T!=T!+TMP(I):NEXT:PRINT
- 11850 PRINT"sum of diffs=";T!
- 11860 PRINT USING"HCAP= ##.###";T!/N;:PRINT SPC(1)C5$;
- 11870 STOP
- 11880 '+++++
- 11890 IF HC=1 THEN 11950 'tra if home course
- 11900 PRINT:PRINT"Option two"
- 11910 PRINT"The gross scores from this round will not be included in the"
- 11920 PRINT"player's data bank since the course is not the players home course.
- 11930 BEEP:GOSUB 590:GOTO 12230
- 11940 '+++++
- 11950 PRINT:PRINT" Option two."
- 11960 PRINT" 1. Include the gross scores in the players data bank."
- 11970 PRINT" 2. Do not use these scores. This was a practice round.":PRINT
- 11980 M1$="number":M2$="(1 or 2) ":GOSUB 570
- 11990 RESTORE 814
- 12000 IF KB=1 THEN GOSUB 600:IF KB$="Y" THEN 12060 ELSE CLS:GOTO 11950
- 12010 IF KB=2 THEN GOSUB 600:IF KB$="Y" THEN 12230 ELSE CLS:GOTO 11950
- 12020 PRINT:PRINT"Please choose an option number. ":GOSUB 580:CLS:GOTO 11950
- 12030 '+++++
- 12040 '
- 12050 '+++++ count the round +++++
- 12060 E5=CVI(E5$)+1:RSET E5$=MKI$(E5) 'total rounds tallied
- 12070 '+++++ save the last 20 actual scores +++++
- 12080 N=3:FOR I=2 TO 20:TMP(I)=CVI(MID$(F5$,N,2)):N=N+2:NEXT
- 12090 P$="":FOR I=2 TO 20:P$=P$+MKI$(TMP(I)):NEXT:P$=P$+MKI$(PS)
- 12100 LSET F5$=P$:LSET A5$="V" 'last 20 actuals
- 12110 '+++++ sum the actuals for each hole +++++
- 12120 N=1:FOR I=1 TO 18:TX(I)=CVI(MID$(G5$,N,2)):N=N+2
- 12130 TX(I)=TX(I)+PS(I):NEXT 'sum actuals for each hole
- 12140 P$="":FOR I=1 TO 18:P$=P$+MKI$(TX(I)):NEXT
- 12150 LSET G5$=P$ 'actuals for each hole
- 12160 '+++++ lowest actual score for each hole +++++
- 12170 FOR I=1 TO 18:DIF(I)=VAL(MID$(H5$,I,1))
- 12180 IF PS(I)<DIF(I) THEN DIF(I)=PS(I) 'get low score
- 12190 NEXT:P$="":FOR I=1 TO 18:P$=P$+RIGHT$(STR$(DIF(I)),1):NEXT
- 12200 LSET H5$=P$ 'low actual each hole
- 12210 '+++++ low actual round +++++
- 12220 T=CVI(I5$):IF PS<T THEN T=PS:RSET I5$=MKI$(T)
- 12230 GOTO 10750 'SCORES DONE
- 12240 '+++++ TALLY PUTTS +++++
- 12250 IF YT=3 THEN FOR I=1 TO 18:IJ(I)=PS(I):NEXT I:AF=PF:AB=PB 'save gross #'s
- 12260 CLS:PRINT MNU6$:PRINT:PRINT"ENTER the front side putts for ";B4$
- 12270 PRINT:PRINT SPC(6);"Hole # Score"
- 12280 S=4:N=1:M=9:L=0:GOSUB 720 'get scores in ps(m)
- 12290 PRINT:PRINT SPC(4);"Score is ";SUM
- 12300 RESTORE 833:GOSUB 600 'ask for change
- 12310 T$="Change a front nine score"
- 12320 IF KB$="Y" THEN M1$="Score":GOSUB 740:SUM=X:GOTO 12300 'make change
- 12330 PF=SUM
- 12340 CLS:PRINT MNU6$:PRINT:PRINT"ENTER the back side putts for ";B4$
- 12350 PRINT:PRINT SPC(6);"Hole # Score"
- 12360 S=4:N=1:M=9:L=9:GOSUB 720 'get scores in ps(m)
- 12370 PRINT:PRINT SPC(5);"Score is ";SUM
- 12380 RESTORE 833:GOSUB 600 'ask for change
- 12390 T$="Change a back nine score"
- 12400 IF KB$="Y" THEN M1$="Score":GOSUB 740:SUM=X:GOTO 12380 'make change
- 12410 PB=SUM:PS=PF+PB 'gross putts
- 12420 '+++++
- 12430 IF HC<>1 THEN 12630
- 12440 '+++++ count the round +++++
- 12450 J5=CVI(J5$)+1:RSET J5$=MKI$(J5) 'total rounds tallied
- 12460 '+++++ save the last 20 actual scores +++++
- 12470 N=3:FOR I=2 TO 20:TMP(I)=CVI(MID$(K5$,N,2)):N=N+2:NEXT
- 12480 P$="":FOR I=2 TO 20:P$=P$+MKI$(TMP(I)):NEXT:P$=P$+MKI$(PS)
- 12490 LSET K5$=P$:LSET A5$="V" 'last 20 actuals
- 12500 '+++++ sum the actuals for each hole +++++
- 12510 N=1:FOR I=1 TO 18:GS(I)=CVI(MID$(L5$,N,2)):N=N+2
- 12520 GS(I)=GS(I)+PS(I):NEXT 'sum actuals for each hole
- 12530 P$="":FOR I=1 TO 18:P$=P$+MKI$(GS(I)):NEXT
- 12540 LSET L5$=P$ 'actuals for each hole
- 12550 '+++++ lowest actual score for each hole +++++
- 12560 FOR I=1 TO 18:DIF(I)=VAL(MID$(M5$,I,1))
- 12570 IF PS(I)<DIF(I) THEN DIF(I)=PS(I) 'get low score
- 12580 NEXT:P$="":FOR I=1 TO 18:P$=P$+RIGHT$(STR$(DIF(I)),1):NEXT
- 12590 LSET M5$=P$ 'low actual each hole
- 12600 '+++++ low actual round +++++
- 12610 T=CVI(N5$):IF PS<T THEN T=PS:RSET N5$=MKI$(T)
- 12620 '+++++ DISPLAY PUTTS +++++
- 12630 CLS:PRINT SPC(18):COLOR 0,15,0:PRINT" PUTTING SCORES ";:COLOR 7,0,0
- 12640 PRINT SPC(22);GREG$:PRINT
- 12650 CF=0:CB=0:FOR I=1 TO 9:CF=CF+CP(I):CB=CB+CP(I+9):NEXT I
- 12660 PRINT "HOLE #";SPC(4);
- 12670 FOR I=1 TO 9 STEP 3:PRINT USING "###";I;I+1;I+2;:PRINT SPC(1):NEXT I
- 12680 PRINT "Front";
- 12690 FOR I=10 TO 18 STEP 3:PRINT USING "###";I;I+1;I+2;:PRINT SPC(1):NEXT I
- 12700 PRINT "Back":PRINT SPC(41);"nine";SPC(30);"nine":PRINT "PAR";SPC(8);
- 12710 FOR I=1 TO 9 STEP 3:PRINT CP(I);CP(I+1);CP(I+2);SPC(1):NEXT I:PRINT CF;
- 12720 FOR I=10 TO 18 STEP 3:PRINT USING "###";CP(I);CP(I+1);CP(I+2);
- 12730 PRINT SPC(1):NEXT I:PRINT CB
- 12740 IF YT=2 THEN 12780 ELSE PRINT "gross score";
- 12750 FOR I=1 TO 9 STEP 3:PRINT IJ(I);IJ(I+1);IJ(I+2);SPC(1);:NEXT I:PRINT AF;
- 12760 FOR I=10 TO 18 STEP 3:PRINT USING "###";IJ(I);IJ(I+1);IJ(I+2);
- 12770 PRINT SPC(1):NEXT I:PRINT AB
- 12780 PRINT:COLOR 0,15,0:PRINT " putts ";
- 12790 FOR I=1 TO 9 STEP 3:PRINT PS(I);PS(I+1);PS(I+2);SPC(1);:NEXT I:PRINT PF;
- 12800 FOR I=10 TO 18 STEP 3:PRINT USING "###";PS(I);PS(I+1);PS(I+2);
- 12810 PRINT SPC(1);:NEXT I:PRINT PB:COLOR 7,0,0
- 12820 '+++++ delta strokes & putts
- 12830 IF YT=2 THEN 12920
- 12840 S=0:FOR I=1 TO 9:DIF(I)=IJ(I)-PS(I):S=S+DIF(I):NEXT I
- 12850 T=0:FOR I=10 TO 18:DIF(I)=IJ(I)-PS(I):T=T+DIF(I):NEXT I
- 12860 PRINT"strokes ";:FOR I=1 TO 18:PRINT DIF(I);
- 12870 IF FNNMODM(I,3)=0 THEN PRINT SPC(1)
- 12880 IF I=9 THEN PRINT S;SPC(1);
- 12890 IF I=18 THEN PRINT USING"##";T
- 12900 NEXT I
- 12910 '+++++
- 12920 PRINT:PRINT "PAR is ";PAR;" at ";B2$
- 12930 IF YT=3 THEN PRINT "The player's score is ";:PRINT USING "###";AF+AB
- 12940 LOCATE CSRLIN+1,15:COLOR 0,15,0:PRINT" The putting score is ";
- 12950 PRINT USING "### ";PS
- 12960 IF YT=3 THEN LOCATE CSRLIN,15:PRINT " the stroke score is ";S+T
- 12970 KB$=B4$:GOSUB 700 'remove excess spaces
- 12980 LOCATE CSRLIN,15:PRINT" The tally is completed for ";KB$+" ":COLOR 7,0,0
- 12990 GOSUB 590:IF HC=1 THEN 13040
- 13000 PRINT:PRINT:BEEP
- 13010 PRINT"The putting scores for this round will not be included in the
- 13020 PRINT"player's data bank since the course is not the players home course.
- 13030 GOSUB 590
- 13040 GOTO 10760 'PUTTS DONE
- 13050 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- 13060 ' CALCULATE USGA ADJUSTED SCORE
- 13070 'ENTER CP(I)=par scores for the course
- 13080 ' PS(I)=players scores for the course
- 13090 ' H=players present USGA handicap(0-40)
- 13100 'RETURN HS=players adjusted score - USGA rules
- 13110 ' PS=players actual score
- 13120 ' M=limit of strokes over par on the number of
- 13130 ' holes equal to handicap OR equal to excess
- 13140 ' of handicap over 18 or 36.
- 13150 ' N=M-1 limit of strokes over par on balance of holes
- 13160 ' B=# of holes where M over par is allowed
- 13170 ' C=# of holes where M over par was made or C=B
- 13180 ' Q=C-B where Q>=0
- 13190 'NOTE: Scratch players. Limit one over par on any hole
- 13200 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- 13210 PAR=0:CF=0:CB=0:Q=0:HS=0:C=0:PS=0:PF=0:PB=0:AF=0:AB=0 'init
- 13220 B=H: M=1:N=1:IF H<=0 THEN 13260 'scratch player
- 13230 M=2:N=1:IF H<19 THEN 13260 'handicap < 19
- 13240 B=H-18:M=3:N=2:IF H<37 THEN 13260 'handicap < 37
- 13250 B=H-36:M=4:N=3 'handicap < 41
- 13260 FOR I=1 TO 18:DIF(I)=PS(I)-CP(I):PAR=PAR+CP(I):PS=PS+PS(I)
- 13270 IF DIF(I)>=M THEN C=C+1 '# of holes where M over par was made
- 13280 IF DIF(I) <M THEN HS=HS+DIF(I) 'total strokes under limit
- 13290 NEXT I
- 13300 IF C>B THEN Q=C-B 'excess # of holes where M over par was made
- 13310 IF C>B THEN C=B 'set limit on # holes at M over par
- 13320 HS=HS + M*C + PAR + N*Q 'adjusted score USGA rules
- 13330 ZZ= M*B + PAR + N*(18-B) 'max allowed over par score
- 13340 T1=0
- 13350 FOR I=1 TO 18 'get adj. scores for each hole
- 13360 IF DIF(I)>=M AND T1<=B THEN GS(I)=CP(I)+M:T1=T1+1 'max over par this hole
- 13370 IF DIF(I)>=M AND T1>B THEN GS(I)=CP(I)+N 'max score for this hole
- 13380 IF DIF(I)<M THEN GS(I)=PS(I) 'use players actual score
- 13390 IF I<10 THEN PF=PF+PS(I) ELSE PB=PB+PS(I) 'get front/back totals
- 13400 IF I<10 THEN CF=CF+CP(I) ELSE CB=CB+CP(I)
- 13410 IF I<10 THEN AF=AF+GS(I) ELSE AB=AB+GS(I)
- 13420 NEXT I
- 13430 RETURN
- 14000 '+++++ grunt work
- 14010 DELETE 490-9999
- 14020 SAVE"b:tally.asc",A
- 14030 RUN"b:main.bas"
- 15000 'for chain delete
- 14000 '+++++ grunt work
-